SAM I3 - Modulo 226

Test 4 - TimerServer e TimerClient

Devi creare il programma server TimerServer e relativo il programma client TimerClient.

TimerServer fornisce il servizio di network timer ed è in grado di servire più client contemporaneamente. Il conteggio del timer inizia quando un client si collega; poi ogni volta che il client lo richiede, il server gli ritorna lo stato del timer aggiornato.

Protocollo di comunicazione

TimerServer e TimerClient adottano un semplice protocollo binario per comunicare. Il client richiede al server l’invio dello stato attuale del timer inviando un byte contenente il valore 65; in risposta il server ritorna al client 3 byte che rappresentano il tempo trascorso dall’inizio della connessione nel formato [<minuti>,<secondi>,<centesimi>].

TimerServer

Progetta e implementa la classe TimerServer in forma di tool da linea di comando (senza GUI). Il programma deve funzionare secondo le specifiche seguenti:

Esempio:

TimerClient

La classe TimerClient possiede una GUI semplicissima (Swing) in cui viene rappresentato lo stato del timer nel modo seguente:

La parte bassa della finestra contiene una etichetta che rappresenta lo stato del conteggio del timer nel formato <mmm>:<ss>:<cc> ed è centrato. La parte centrale della finestra rappresenta un quadrante in cui lo stato del conteggio è rappresentato da:

Il quadrante è disegnato in bianco su sfondo nero è sempre centrato, possiede sempre le dimensioni massime consentite dalle dimensioni della finestra e mantiene un margine minimo di 10 pixel dai bordi dell’area in cui è contenuto.

Quando viene lanciato, il programma si connette al server (sull’indirizzo di loopback) e poi richiede lo stato del timer e aggiorna la grafica ogni 50 millisecondi.

Gli eventuali errori di comunicazione vengono segnalati nel modo seguente:

Demo

Consegna

Realizza le applicazioni TimerServer e TimerClient. Dovrai consegnare la cartelle di progetto NetBeans nominata test4i3<Nome><Cognome>.